package com.yonyou.openapi.event.dept;

import com.google.common.collect.Sets;
import com.yonyou.openapi.base.auth.network.cryptor.EncryptionHolder;
import com.yonyou.openapi.base.event.EventListener;
import com.yonyou.openapi.event.ISVEventExtendDto;
import com.yonyou.openapi.event.IsvEventExtendType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Set;

/**
 * @description: 部门新增事件监听
 **/
@Slf4j
@Component
@RequiredArgsConstructor
public class DeptAddEvent implements EventListener<ISVEventExtendDto> {


    /**
     * 在这里写待办的处理逻辑,如果返回true则继续执行下一个相同编码的事件，返回false不继续执行。
     * @param type 事项类型
     * @param event 解析后对象
     * @param holder 响应消息体
     * @return boolean
     */
    @Override
    public boolean onEvent(String type, ISVEventExtendDto event, EncryptionHolder holder) {
        String[] deptId = event.getDeptId();
        Long timestamp = event.getTimestamp();
        return true;
    }

    /**
     * 如果存在相同事件编码的处理逻辑，此处用于执行排序
     */
    @Override
    public int priority() {
        return EventListener.super.priority()-100;
    }

    /**
     * 返回事件编码
     * @return Set<String>
     */
    @Override
    public Set<String> supportTypes() {
        return Sets.newHashSet(IsvEventExtendType.DEPT_ADD);
    }

    /**
     * 返回接收实体对象
     * @return Class<ISVEvent>
     */
    @Override
    public Class<ISVEventExtendDto> getEventClass() {
        return ISVEventExtendDto.class;
    }

}
